package dreamdancetiktokenumsmyredis

const (
	DanceElementPubilbType  = 0
	DanceElementPrivateType = 1
	DanceElementNoneType    = 2

	DanceElementTypeClothing = 1
	DanceElementTypeProps    = 2

	// 散件
	DanceElementPartHair  = 1 //头发
	DanceElementPartFace  = 2 // 脸
	DanceElementPartUpper = 5 // 上半身
	DanceElementPartLower = 6 // 下半身fa
	DanceElementPartShoes = 8 // 鞋子
	//挂件
	DanceElementPartLHand       = 11 // 左手持
	DanceElementPartRHand       = 12 // 右手持
	DanceElementPartHead        = 14 // 头顶
	DanceElementPartBack        = 15 // 背后
	DanceElementBackgroundBoard = 16 // 背景板
	//组合
	DanceElementPartSuitHF      = 21 // 组合 - 头发 + 脸
	DanceElementPartSuitHFJ     = 22 // 组合 - 头发 + 脸 + 上身
	DanceElementPartSuitHFJP    = 23 // 组合 - 头发 + 脸 + 上身 + 下身
	DanceElementPartSuitHFJPS   = 24 // 组合 - 头发 + 脸 + 上身 + 下身 + 鞋
	DanceElementPartSuitHJ      = 25 // 组合 - 头发 + 上身
	DanceElementPartSuitHJP     = 26 // 组合 - 头发 + 上身 + 下身
	DanceElementPartSuitHJPS    = 27 // 组合 - 头发 + 上身 + 下身 + 鞋
	DanceElementPartSuitJP      = 28 // 组合 - 上身 + 下身
	DanceElementPartSuitJPS     = 29 // 组合 - 上身 + 下身 + 鞋
	DanceElementPartSuitPS      = 30 // 组合 - 下身 + 鞋
	DanceElementPartPelvisLocal = 41 // 腰附加
	DanceElementPartSpine1Local = 42 // 胸附加
	DanceElementPartRootLocal   = 43 // 脚底附加
	DanceElementPartPelvisWorld = 51 // 腰挂载
	DanceElementPartSpine1World = 52 // 胸挂载
	DanceElementPartRootWorld   = 53 // 脚底挂载
	DanceElementPartHalo        = 90 // 光环
	DanceElementPartPiece       = 80 // 碎片
	//挂件
	DanceElementPartPresentLHand = 100 // 送礼出现的 额外挂载 左手持
	DanceElementPartPresentRHand = 200 // 送礼出现的 额外挂载 右手持
	DanceElementPartPresentHead  = 300 // 送礼出现的 额外挂载 头顶
	DanceElementPartPresentBack  = 400 // 送礼出现的 额外挂载 背后 Max }

)

type DanceElementEnums struct {
}

var DanceElementEnumsObject DanceElementEnums

func (e DanceElementEnums) Tags() []int {
	return []int{
		DanceElementPubilbType,
		DanceElementPrivateType,
		DanceElementNoneType,
	}
}

func (e DanceElementEnums) TagsMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.Tags() {
		m[s] = e.TagsString(s)
	}
	return m
}

func (e DanceElementEnums) TagsString(tag int) string {
	switch tag {
	case DanceElementPubilbType:
		return "公有"
	case DanceElementPrivateType:
		return "私有"
	case DanceElementNoneType:
		return "特殊"
	default:
		return "公有"
	}
}

//public enum ClothPart : int { None = 0,
// 散件
//Hair = 1//头发
//Face = 2// 脸
//Upper = 5// 上半身
//Lower = 6// 下半身fa
//Shoes = 8// 鞋子

//挂件
//LHand = 11// 左手持
//RHand = 12// 右手持
//Head = 14// 头顶
//Back = 15// 背后
//组合
//SuitHF = 21// 组合 - 头发 + 脸
//SuitHFJ = 22// 组合 - 头发 + 脸 + 上身
//SuitHFJP = 23// 组合 - 头发 + 脸 + 上身 + 下身
//SuitHFJPS = 24// 组合 - 头发 + 脸 + 上身 + 下身 + 鞋
//SuitHJ = 25// 组合 - 头发 + 上身
//SuitHJP = 26// 组合 - 头发 + 上身 + 下身
//SuitHJPS = 27// 组合 - 头发 + 上身 + 下身 + 鞋
//SuitJP = 28// 组合 - 上身 + 下身
//SuitJPS = 29// 组合 - 上身 + 下身 + 鞋
//SuitPS = 30// 组合 - 下身 + 鞋
//PelvisLocal = 41// 腰附加
//Spine1Local = 42// 胸附加
//RootLocal = 43// 脚底附加
//PelvisWorld = 51// 腰挂载
//Spine1World = 52// 胸挂载
//RootWorld = 53// 脚底挂载
//Halo = 90// 光环
//挂件
//PresentLHand = 100// 送礼出现的 额外挂载 左手持
//PresentRHand = 200// 送礼出现的 额外挂载 右手持
//PresentHead = 300// 送礼出现的 额外挂载 头顶
//PresentBack = 400// 送礼出现的 额外挂载 背后 Max }

func (e DanceElementEnums) Part() []int {
	return []int{
		DanceElementPartHair,
		DanceElementPartFace,
		DanceElementPartUpper,
		DanceElementPartLower,
		DanceElementPartShoes,
		DanceElementPartLHand,
		DanceElementPartRHand,
		DanceElementPartHead,
		DanceElementPartBack,
		DanceElementBackgroundBoard,
		DanceElementPartSuitHF,
		DanceElementPartSuitHFJ,
		DanceElementPartSuitHFJP,
		DanceElementPartSuitHFJPS,
		DanceElementPartSuitHJ,
		DanceElementPartSuitHJP,
		DanceElementPartSuitHJPS,
		DanceElementPartSuitJP,
		DanceElementPartSuitJPS,
		DanceElementPartSuitPS,
		DanceElementPartPelvisLocal,
		DanceElementPartSpine1Local,
		DanceElementPartRootLocal,
		DanceElementPartPelvisWorld,
		DanceElementPartSpine1World,
		DanceElementPartRootWorld,
		DanceElementPartHalo,
		DanceElementPartPresentLHand,
		DanceElementPartPresentRHand,
		DanceElementPartPresentHead,
		DanceElementPartPresentBack,
		DanceElementPartPiece,
	}
}

func (e DanceElementEnums) PartMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.Part() {
		m[s] = e.PartString(s)
	}
	return m
}

func (e DanceElementEnums) PartString(tag int) string {
	switch tag {
	case DanceElementPartHair:
		return "头发"
	case DanceElementPartFace:
		return "脸"
	case DanceElementPartUpper:
		return "上半身"
	case DanceElementPartLower:
		return "下半身"
	case DanceElementPartShoes:
		return "鞋子"
	case DanceElementPartLHand:
		return "左手持"
	case DanceElementPartRHand:
		return "右手持"
	case DanceElementPartHead:
		return "头顶"
	case DanceElementPartBack:
		return "背后"
	case DanceElementBackgroundBoard:
		return "背景板"
	case DanceElementPartSuitHF:
		return "头发+脸"
	case DanceElementPartSuitHFJ:
		return "头发+脸+上身"
	case DanceElementPartSuitHFJP:
		return "头发+脸+上身+下身"
	case DanceElementPartSuitHFJPS:
		return "头发+脸+上身+下身+鞋"
	case DanceElementPartSuitHJ:
		return "头发+上身"
	case DanceElementPartSuitHJP:
		return "头发+上身+下身"
	case DanceElementPartSuitHJPS:
		return "头发+上身+下身+鞋"
	case DanceElementPartSuitJP:
		return "上身+下身"
	case DanceElementPartSuitJPS:
		return "上身+下身+鞋"
	case DanceElementPartSuitPS:
		return "下身+鞋"
	case DanceElementPartPelvisLocal:
		return "腰附加"
	case DanceElementPartSpine1Local:
		return "胸附加"
	case DanceElementPartRootLocal:
		return "脚底附加"
	case DanceElementPartPelvisWorld:
		return "腰挂载"
	case DanceElementPartSpine1World:
		return "胸挂载"
	case DanceElementPartRootWorld:
		return "脚底挂载"
	case DanceElementPartHalo:
		return "光环"
	case DanceElementPartPresentLHand:
		return "额外挂载 左手持"
	case DanceElementPartPresentRHand:
		return "额外挂载 右手持"
	case DanceElementPartPresentHead:
		return "额外挂载 头顶"
	case DanceElementPartPresentBack:
		return "额外挂载 背后"
	case DanceElementPartPiece:
		return "碎片"
	default:
		return "公有"
	}
}

func (e DanceElementEnums) ElementType() []int {
	return []int{
		DanceElementTypeClothing,
		DanceElementTypeProps,
	}
}

func (e DanceElementEnums) ElementMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.ElementType() {
		m[s] = e.ElementString(s)
	}
	return m
}

func (e DanceElementEnums) ElementString(tag int) string {
	switch tag {
	case DanceElementTypeClothing:
		return "服饰"
	case DanceElementTypeProps:
		return "道具"
	default:
		return "其他"
	}
}
